example automated dashboard

library(shiny)
library(tidyverse)
devtools::load_all()
cur_date <- Sys.time()
attr(cur_date,"tzone") <- "UTC"

tags$script(
  shiny::HTML('
 function get_time_diff( datetime ){
  var datetime = new Date(datetime.replace(" ", "T") + "Z").getTime();;
  var now = new Date().getTime();
  var milisec_diff = now - datetime;
  var msec = milisec_diff;
  var hh = Math.floor(msec / 1000 / 60 / 60);
  msec -= hh * 1000 * 60 * 60;
  var mm = Math.floor(msec / 1000 / 60);
  msec -= mm * 1000 * 60;
  var ss = Math.floor(msec / 1000);
  msec -= ss * 1000;
  return hh + " Hours " + mm + " Minutes " + ss + " Seconds";
}
')
)
tags$script(shiny::HTML(glue::glue('
$(function(){{
  $("#date-diff").html("Last Updated " + get_time_diff("{cur_date}") + " ago");    
}});
  
')))
macro_data <- macro_indicators %>%
  dplyr::mutate(data = purrr::map(id,~tidyquant::tq_get(.,get = "economic.data",from = Sys.Date() - 20*365)))

usethis::use_data(macro_data,overwrite = TRUE)


chart_indicators <- function(df, factor_name = NULL) {
  df %>%
    dplyr::filter(factor == factor_name) %>%
    split(.$rowid) %>%
    purrr::map(~ {
      dat <- .x %>%
        tidyr::unnest(data)
      dat %>%
        highcharter::hchart("line", highcharter::hcaes(date, price)) %>%
        highcharter::hc_title(text = unique(.x$indicator)) %>%
        hc_rangeSelector(enabled = TRUE) %>%
        hc_yAxis(
          title = list(text = ""),
          plotLines = list(list(
            value = tail(dat, 1) %>% pull(price), color = "white",
            dashStyle = "shortdash",width = 1, label = list(
              style = list(color = "white"),
              formatter = JS("function(){
                   return Highcharts.numberFormat(this.options.value, 2);
                 }")
            )
          ))
        ) %>%
        highcharter::hc_add_theme(highcharter::hc_theme_darkunica()) %>% 
        hc_credits(enabled = TRUE, text = "Source: <a href='https://fred.stlouisfed.org/' target='_blank'>Federal Reserve Economic Data</a>",useHTML = TRUE)
    }) %>%
    highcharter::hw_grid(ncol = 2)
}

Macro Indicators

Rates

macro_data %>% chart_indicators("Interest Rates")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Inflation

macro_data %>% chart_indicators("Inflation")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Others

macro_data %>% chart_indicators("Others")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Employment

macro_data %>% chart_indicators("Employment")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Housing & construction

macro_data %>% chart_indicators("Housing & construction")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Retail and Consumption

macro_data %>% chart_indicators("Retail and Consumption")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Surveys

macro_data %>% chart_indicators("Surveys")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Manufacturing

macro_data %>% chart_indicators("Manufacturing")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f

Income

macro_data %>% chart_indicators("Income")
<<<<<<< HEAD
=======
>>>>>>> 34f823ac591be88d2828ebfb6c2887b0bdb8596f
/*fix for 0 padding*/
.col-1-2, .col-6-12 {
    padding: 20px;
}

// resize highcharts to fit in main cotent area

document.addEventListener("DOMContentLoaded", function() {

    $(".highchart, .highcharts-container, .highcharts-root").css("max-width","100%");   
   
    var t = setInterval(function(){
      var resizeEvent = new Event('resize');
      window.dispatchEvent(resizeEvent);  
    }, 1000);
 
   
  });